# -*- coding: utf-8 -*-
__author__ = 'lztkdr'
__date__ = '2020/12/3 8:50'

"""
    协程：另外一种实现多任务的方式，占用更少的资源，也叫做微线程
    协程概念：协同程序，在主程序运行的同时，开启另外一段逻辑处理，来协同当前程序的执行，。
    协程的特点就是**切换**着执行，使用yield关键字实现的
    1- yield的生成器函数就是一种简单的协程
    2- 协程是用户层面可以控制的，而进程是cpu控制的
"""

import time

def work1():
	while True:
		print("-----work1------")

		# 生成器被进行next的时候，yield返回一个空，在这里卡住，等待下一次next才继续执行
		yield
		time.sleep(0.5)


def work2():
	while True:
		print("-----work2------")
		yield
		time.sleep(0.5)


def test():
	w1 = work1()
	w2 = work2()

	# 死循环中next(w1)调用的时候，卡在yield屈服让步，然后程序执行next(w2)
	# next(w2)执行的时候，也会卡在yield屈服让步给next(w1)执行
	# 就这样，在死循环中来回yield关键字切换执行时间片段
	while True:
		next(w1)
		next(w2)


test()

print('-------------------------------------')

# def tt():
# 	while True:
# 		yield 1
# 		time.sleep(0.5)
#
#
# print(tt())
#
# while True:
# 	next(tt())
